package net.sahv.bdyz.controller.admin;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

import net.sahv.bdyz.model.PatternFilter;
import net.sahv.bdyz.service.PatternFilterService;
import net.sahv.bdyz.service.PatternService;
import net.sahv.bdyz.util.PagingUtil;

@Controller
@RequestMapping("admin/patternfilter/")
public class PatternFilteradminController {
	@Autowired
	private PatternFilterService patternFilterService;
	@Autowired
	private PatternService patternService;// 花型列表

	/**
	 * 跳转list页面
	 * 
	 * @author 薛国计
	 * @date 2016年8月8日
	 * @return
	 */
	@RequestMapping(value = "listpatternfilter", method = RequestMethod.GET)
	public String listpatternfilter() {
		return "admin/patternfilter/listpatternfilter";
	}
	/**
	 * 
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月29日 上午11:45:50
	* @param
	* @parameter
	* @return
	 */
	@RequestMapping(value = "listpatternfilter2", method = RequestMethod.GET)
	public String listpatternfilter2() {
		return "admin/patternfilter/listpatternfilter2";
	}
	/**
	 * 花型预设标签（大类列表）
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月30日 上午10:53:05
	* @param
	* @parameter
	* @return
	 */
	@RequestMapping(value = "listpatternfilterBig", method = RequestMethod.GET)
	public String listpatternfilterBig() {
		return "admin/patternfilter/listpatternfilterBig";
	}
	/**
	 * 花型预设标签添加页面
	 * 
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年9月29日14:54:33
	 * @return
	 */
	@RequestMapping("/Add")
	public String toAddPage(Model model) {
		List<PatternFilter> ffList = patternFilterService.findParentList();
		model.addAttribute("parent", ffList);
		return "admin/patternfilter/add";
	}
	/**
	 * 花型预设标签修改页面
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月29日 下午2:54:19
	* @param
	* @parameter
	* @return
	 */
	@RequestMapping("/Edit")
	public String Edit(Integer id, Model model) {
		List<PatternFilter> ffList = patternFilterService.findParentList();
		if (id != null) {
			PatternFilter ff = patternFilterService.findById(id);
			model.addAttribute("ff", ff);
		}
		model.addAttribute("parent", ffList);
		return "admin/patternfilter/update";
	}
	/**
	 * 添加页面
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月9日 下午2:13:20
	 * @return
	 */
	@RequestMapping("/Add2")
	public String toAddPage2(Model model) {
		List<PatternFilter> ffList = patternFilterService.findParentListBig();
		model.addAttribute("parent", ffList);
		return "admin/patternfilter/add2";
	}

	@RequestMapping("/Edit2")
	public String Edit2(Integer id, Model model) {
		List<PatternFilter> ffList = patternFilterService.findParentListBig();
		if (id != null) {
			PatternFilter ff = patternFilterService.findById(id);
			model.addAttribute("ff", ff);
		}
		model.addAttribute("parent", ffList);
		return "admin/patternfilter/update2";
	}
	/**
	 * 花型预设标签添加页面
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月9日 下午2:13:20
	 * @return
	 */
	@RequestMapping("/AddBig")
	public String toAddPageBig() {
		return "admin/patternfilter/addBig";
	}
	/**
	 * 花型预设标签编辑页面
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月30日 上午10:43:52
	* @return
	 */
	@RequestMapping("/EditBig")
	public String EditBig(Integer id, Model model) {
		if (id != null) {
			PatternFilter ff = patternFilterService.findById(id);
			model.addAttribute("ff", ff);
		}
		model.addAttribute("id", id);
		return "admin/patternfilter/updateBig";
	}

	/**
	 * 列表
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月8日 下午6:00:42
	 * @param
	 * @parameter
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/list", method = RequestMethod.POST)
	public JSON getList(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String sortField = " ";
		Integer where = 1;
		Map<String, Object> param = new HashMap<String, Object>();

		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);

		List<Map<String, Object>> ffList = patternFilterService.getList(param);
		// 统计信息的总条数
		Integer totalCount = patternFilterService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", ffList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}
	/**
	 * 花型预设标签列表
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月29日 下午2:54:43
	* @param
	* @parameter
	* @return
	 */
	@ResponseBody
	@RequestMapping(value = "/list2", method = RequestMethod.POST)
	public JSON getListByTwo(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String sortField = " ";
		Integer where = 2;
		Map<String, Object> param = new HashMap<String, Object>();

		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);

		List<Map<String, Object>> ffList = patternFilterService.getList(param);
		// 统计信息的总条数
		Integer totalCount = patternFilterService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", ffList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}
	/**
	 * 花型预设标签（大类列表）
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月30日 上午10:29:16
	* @param
	* @parameter
	* @return
	 */
	@ResponseBody
	@RequestMapping(value = "/listBig", method = RequestMethod.POST)
	public JSON getListByTwoBig(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String sortField = " ";
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", "");
		param.put("sortField", sortField);

		List<Map<String, Object>> ffList = patternFilterService.getTwoParentList(param);
		// 统计信息的总条数
		Integer totalCount = patternFilterService.getTotalCountParent();

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", ffList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}
	/**
	 * 添加方法
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月9日 下午2:13:40
	 * @param
	 * @parameter
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/AddPatternFilter", method = RequestMethod.POST)
	public ApiResult Add(PatternFilter model) {
		ApiResult result = new ApiResult();
		String color = patternFilterService.selectByPrimaryKey(model.getPtParentId()).getPtName();// 获取选中的父级名称
		if (color.equals("颜色")) {
			result.msg.status = 1;
			result.msg.desc = "不能选择颜色！";
		} else {
			model.setPtIsDelete(0);// 未删除
			//model.setPtMessage1("1");
			int count = patternFilterService.insert(model);
			if (count == 1) {
				result.msg.status = 0;
				result.msg.desc = "添加成功！";
			} else {
				result.msg.status = 1;
				result.msg.desc = "添加失败！";
			}
		}
		return result;
	}
	/**
	 * 花型预设标签添加方法
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月30日 上午10:50:13
	* @param
	* @parameter
	* @return
	 */
	@ResponseBody
	@RequestMapping(value = "/AddPatternFilterBig", method = RequestMethod.POST)
	public ApiResult AddBig(PatternFilter model) {
		ApiResult result = new ApiResult();
		model.setPtIsDelete(0);// 未删除
		model.setPtMessage1("2");//花型预设标签
		model.setPtParentId(0);//父级ID为0
		int count = patternFilterService.insert(model);
		if (count == 1) {
			result.msg.status = 0;
			result.msg.desc = "添加成功！";
		} else {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		return result;
	}
	/**
	 * 花型预设标签修改方法
	* @author  作者 : 周晓娜
	* @date 创建时间：2016年9月30日 上午10:49:56
	* @param
	* @parameter
	* @return
	 */
	@ResponseBody
	@RequestMapping(value = "/UpdatePatternFilterBig", method = RequestMethod.POST)
	public ApiResult UpdatePatternFilterBig(PatternFilter model) {
		ApiResult result = new ApiResult();
		model.setPtParentId(0);//父级ID为0
		int count = patternFilterService.updateByPrimaryKey(model);
		if (count == 1) {
			result.msg.status = 0;
			result.msg.desc = "修改成功！";
		} else {
			result.msg.status = 1;
			result.msg.desc = "修改失败！";
		}
		return result;
	}
	/**
	 * 修改方法
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月9日 下午2:13:48
	 * @param
	 * @parameter
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/UpdatePatternFilter", method = RequestMethod.POST)
	public ApiResult UpdatePatternFilter(PatternFilter model) {
		ApiResult result = new ApiResult();
		String color = patternFilterService.selectByPrimaryKey(model.getPtParentId()).getPtName();// 获取选中的父级名称
		if (color.equals("颜色")) {
			result.msg.status = 1;
			result.msg.desc = "不能选择颜色！";
		} else {
			int count = patternFilterService.updateByPrimaryKey(model);
			if (count == 1) {
				result.msg.status = 0;
				result.msg.desc = "修改成功！";
			} else {
				result.msg.status = 1;
				result.msg.desc = "修改失败！";
			}
		}
		return result;
	}

	/**
	 * 删除方法
	 * 
	 * @author 作者 : 周晓娜
	 * @date 创建时间：2016年8月9日 下午2:13:54
	 * @param
	 * @parameter
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/Delete", method = RequestMethod.POST)
	public ApiResult delete(Integer[] id) {
		ApiResult result = new ApiResult();
		int flag = 0;
		Integer[] tmp = new Integer[id.length];// 临时数组
		int idx = 0;// 常量
		boolean isParent = false;
		if (id.length > 0) {
			for (int i : id) {
				int count = 0;
				PatternFilter pf = patternFilterService.findById(i);
				if (pf != null) {
					if (pf.getPtParentId() == 0) {
						isParent = true;
						count = patternFilterService.getChildList(i).size();
					} else {
						count = patternService.getCountPatternFilter(i, pf.getPtName());
					}
					if (count == 0) {
						tmp[idx] = i;
						idx++;
					}
				}
			}
			flag = patternFilterService.updateDeleteById(tmp);
		}
		if (flag > 0) {
			result.msg.status = 0;
			if (isParent) {
				result.msg.desc = "删除成功！共删除" + flag + "条数据！其中" + (id.length - idx) + "条数据下尚存在内容！";
			} else {
				result.msg.desc = "删除成功！共删除" + flag + "条数据！其中" + (id.length - idx) + "条数据下尚存在花型！";
			}
		} else if (flag == 0 && id.length == 1) {
			result.msg.status = 1;
			if (isParent) {
				result.msg.desc = "删除失败！该数据下尚存在内容！";
			} else {
				result.msg.desc = "删除失败！该数据下尚存在花型！";
			}
		} else {
			result.msg.status = 1;
			result.msg.desc = "删除失败！";
		}
		return result;
	}
}
